home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 22
/
Cream of the Crop 22.iso
/
bbs
/
bdos_xr1.zip
/
XE_USER.DOC
< prev
Wrap
Text File
|
1996-05-09
|
27KB
|
580 lines
User documentation for modified Binkley 2.60 XE
===============================================
Binkley 2.60 original version is (c) Vince Perriello and available
at 2:2474/400. Filenames: B???_260.ZIP (??? = DOS, OS2, W32 or SRC).
Modifications were done by (in alphabetical order) :
Carsten Ellermann, 2:2432/215
Martin M. Pedersen, 2:238/45
Matthias Tichy, 2:2433/920.14
Rudolf Heeb, 2:2464/44
Thomas Waldmann, 2:2474/400
This BT-XE version is named BT 2.60XE9605090530.
This is date and time of creation ^----^^--^ of this compiled version.
Please refer to this version string if you speak of this modified version.
To be short, we abbreviate this as BT-XE below...
Standard disclaimer: regard this as BETA software.
Although we don't know "known bugs" built in by us at the time of this beta
release, we can NOT guarantee. So use it on your own risk ...
If you have any problem with this BT-XE version, please contact us!
Also, if you are a programmer and doing BT source code modifications /
enhancements / bugfixes, too, please also contacts us and work together with
us on this great project!
Modifications in this version done by Carsten Ellermann:
========================================================
- Max. number of AKAs raised from original 25 to BT-XE value of 100 AKAs.
- "ConditionalPoll" - this new function is inserted in BinkleyTerm.
New: Multi-AKA and boolean operation support implemented by Thomas Waldmann.
ConditionalPoll (also known as "FreePoll" from Arjen G. Lentz, who invented
this in his mailer XENIA) allows an Uplink (you) to reject a call from a
Downlink, if there is less mail for him than the configured minimum.
This function will only work with ISDN or a modem that reports the caller ID
in the "Ring" string.
It's possible to list up to 100 ConditionalPoll entries.
How it does work: the downlink will call you, Binkley gets the caller-ID
(eg. "RING 57313340"), searches ALL ConditionalPoll entries for matching
addresses and checks if the condition (minimum outbound size for this AKA)
says "reject call" or "accept call" for each AKA.
Each result (accept=TRUE or accept=FALSE) is evaluated (together with the
result of previous calculation for this number) with the according
boolean operation "AND" or "OR" to calculate the total result.
The boolean operation listed with the first configured ConditionalPoll entry
matching a specific number does not care, you can use "Or" or "And" - it
makes no difference.
If total result is TRUE, call will be accepted.
If total result is FALSE, call will be rejected.
To reject a call Binkley sends the string configured with "Reject" to the
modem. To accept a call, Binkley sends the answer string (normal behaviour).
For downlinks who want to make a file request or send an important crash
mail immediately, Binkley builds a zero byte size file in the outbound
called "*.TRX" for each user. If the downlink gets a "call reject", he/she
can call again within MaxDeltaT seconds and the call will be handled normally.
To configure the function use:
; accept call of 07142980031 if size for 2:2474/405>=100KB or 2nd call
; within 30 seconds:
;ConditionalPoll Or/And AKA [3..5D] MinSize[KB] MaxDeltaT[s] Phone
ConditionalPoll Or 2:2474/405 100 30 07142980031
; accept call of 07142980032 if (size for 2:2474/403>=20KB or 2nd call within
; 30 seconds) *AND* (size for 21:492/4003 >= 10KB or 2nd call within 20s).
;ConditionalPoll Or/And AKA [3..5D] MinSize[KB] MaxDeltaT[s] Phone
ConditionalPoll Or 2:2474/403 20 30 07142980032
ConditionalPoll And 21:492/4003 10 20 07142980032
; accept call of 07142980032 if (size for 2:2474/403>=100KB or 2nd call within
; 30 seconds) *OR* (size for 21:492/4003 >= 50KB or 2nd call within 20s).
;ConditionalPoll Or/And AKA [3..5D] MinSize[KB] MaxDeltaT[s] Phone
ConditionalPoll Or 2:2474/403 100 30 07142980032
ConditionalPoll Or 21:492/4003 50 20 07142980032
; you may configure up to 100 such ConditionalPoll lines
; dependant on your ISDN adaptor and configuration, you maybe should
; leave out the leading "0" (national calls) or "00" (intl calls).
To reject a call, define once:
Reject <Modem command string|>
For a ZyXEL Elite 2864I use:
Reject ATH1|ATH0|
For ELINK 310 use:
Reject AT\\K|
ATS21.2=1 (shows caller number after RING - tested with EPROM 1.36)
For ELINK 301 use:
Reject AT\\K| (since EPROM version 2.20 of 11.5.94)
AT\O5 (show caller number after RING, since v2.12)
Restriction for ELINKs: until a ROM is released which supports a "Call
rejected" response code, you will only be able to reject incoming calls, but
not to treat being rejected yourself (you will just receive "NO CARRIER" if
you are rejected). You may configure a very LOW MaxDeltaT value to handle
this (not nice, but possible) - see also binkley event file A= parameter.
But your links should be aware that they will flag you undialable if they
dial too often without getting a connection.
- New CFG-verb "ModemReject" to identify a rejection response from the modem.
New CFG-verb "AfterCallOut" to send an AT???-command to get a cause value
from ISDN adapters like ZyXEL 2864I.
There are two different ways to see if a call is rejected:
1) The ISDN adapter sends "Busy/Cause=34Be" in one line.
2) You send an AT??? command and get an answer like "Cause = Call reject".
For 1) you need only "ModemReject <Rejectstring>", for 2) you need the
Rejectstring and "AfterCallOut <Lines> <AT command>".
AfterCallOut needs a number of lines (of output caused by AT command) and an
AT command which leads to a report with the cause value.
After a rejected outbound call, all mail to this AKA will change to NORMAL
flavour. Now you have an easy way to ping your Uplink, if he knows the
feature of Freepoll<tm>/ConditionalPoll.
ModemReject will only work with automatic call not with manual calls!
For ZyXEL 2864I i use "AfterCallOut 9 ATI3|" and "ModemReject Call reject".
For CFOS you need only "ModemReject /Cause=34Be".
For ELINK, there is no such possibility until now.
Modifications in this version done by Matthias Tichy:
=====================================================
- New config verb "ReInitTime".
This lets you specify the time between modem initializations.
ReInitTime 10 -> init the modem every 10 minutes.
Valid range for this setting is 1 .. 10 only.
If you specify 0, you will get 1 minute. If you specify >10, you will get
10 minutes. This is due to a restriction in BT's timer routine and may be
removed in a later version of BT-XE.
- New config verb "ReadHoldTime".
This lets you specify the time between automatic outbound rescans.
ReadHoldTime 10 -> rescan outbound 10 minutes. Valid range is 1...
- Support for external request processors (ERPs) with SRIF
To use this, specify in Binkley.Cfg:
SRIF e:\maxfrq\maxfreq $s
The $s parameter will be replaced by the SRIF filename by BT-XE.
The SRIF file will be called "SRIF.Txx", xx=TaskNumber in Hex.
Known limitations:
The external SRIF erp is only invoked in an EMSI/WaZOO session.
Also when JANUS is used, the SRIF ERP is not invoked.
This may be changed in the near future.
The generated SRIF is compatible with the SRIF 1.01 Standard.
But not all of the optional statements are included.
I tried it also with MaxFreq 1.00 wb2 ERP only, so i cannot guarantee that
also other ERPs work with Binkley.
MaxFreq needs in his config a Mailer statement. Since it is not (yet)
allowed to specify Binkley, i use Cantaloup };->=>
Have much fun, and please test carefully.
Modifications in this version done by Rudolf Heeb:
==================================================
- New config verb "ShowAlive".
Generates a file I_ALIVE.xx (xx=Tasknumber) in the "Flags" directory.
If the file exists, nothing is done except checking it for existance.
If it does not exist, it will be created by BT-XE.
Check for existance is done each minute. So external programs can check if
BT-XE is alive by deleting this flag file and waiting if it is re-created
in a minute. If BT-XE terminates, it deletes the flag file itself.
- No system crash at requests of PW-protected files without password.
- Enhanced user dialogue with Alt-G (get file[s]).
BT-XE will show destination system name after you entered dest address.
- Enhanced user dialogue with Alt-S (send file[s]).
BT-XE will show destination system name after you entered dest address.
If you enter a wildcard filename, it will use the first matching file.
If no (matching) file is found, Alt-S remains in filename input mode and
you can try again. No unrecognized typos any longer!
With Win32 version of BT-XE, "\" works with german Windows NT, too.
- Enhanced user dialogue with Alt-S/Alt-G.
After asking "More requests"/"More sends", the same address is used again
if you answer "y". To specify a new address, enter "o" for (o)ther node.
- Enhanced user dialogue with Alt-S (send file[s]).
Support filename expansion like 4OS2/4DOS using TAB for expansion.
Example:
type on my machine c:\d<TAB>\bi<TAB>\HR<TAB><TAB>
get on my machine c:\dowork\binkley\HR0418021.DOC
Modifications in this version done Martin M. Pedersen
=====================================================
- Implemented support for environment variables. If a sequence of
letters, digits, and underscores are enclosed between %'s, it is no
longer handled as a comment, but as an environment variable.
Otherwise, % is still handled as a comment. Also, the configuration
file parser now allows configuration verbs to be indented.
(TW had implemented support for environment variables, too).
- Conditional inclusion of lines based on the task number. If a line
begins with a decimal number, it is compared with the task number
as set by the TASK environment variable (or TASK=n on command line).
This somehow offers the same functionality as [Common] and [Task n],
but is simpler to use for single line differences. Example:
1 Init |AT&FZ|
3 Init ATZ|~~ATH0S27=17|
- I don't think the distributed version of Binkley had this bug, as
IBMC was treated specially. But Watcom had the same problem as IBMC.
The number of minutes left is written to the screen through a file
which is buffered. This fucks up the display, if the buffer is not
flushed because the other status information was written directly to
the display bypassing the buffer. Now the buffer is flushed for both
the IBMC and the Watcom versions.
- Added new keyword "PutEnv". If this is used, there string following
it is put into the environment. Variables set in this way will be
visible to Binkley itself, and by programs spawned by it; e.g.
SPAWNBBS.CMD. Example:
PutEnv BBSHOME=f:\bbs
PutEnv PATH=%BBSHOME%;%BBSHOME%\bin;%PATH%
StatusLog %BBSHOME%\bt\bt%TASK%.log
CostLog %BBSHOME%\bt\costlog%TASK%.log
- "SpawnInit" keyword specifies a command that should be executed as part
of the first-time initialization. Example:
SpawnInit su %PORT% lock %BAUD%
The command is executed only once, in the moment when the command is
encountered in the configuration file. Binkley does not even store
the command in memory. This keyword can save you for a batchfile, and
can use environment variables set in the configuration file.
You may use multiple SpawnInit commands to start multiple commands.
- "MailFlag" keyword. If this is specified in the configuration file (no
arguments), and "Flags" is also specified, Binkley will create a file
called "BTMAIL.IN" in the flags directory when mail has been received.
- "TimeSync" keyword. Followed by an address and a MaxDeltaTSeconds value,
it specifies that the clock should be set to after an EMSI session (without
password error) with the node specified (using TRX) - if the time difference
is not more than MaxDeltaTSeconds seconds.
Example:
TimeSync 2:238/28 60
So time will get synced to time of 2:238/28, but only if difference is within
60 seconds to our own time.
Tip: setting MaxDeltaTSeconds to e.g. 3700 (more than 1 hour) lets you do
summer / winter time zone switching automatically.
- "LocalLog" keyword. If this keyword is specified (no arguments),
Binkley will write its log information (both the normal log, and the
cost log) to a log file in the same directory as BINKLEY.Dxx etc.
When Binkley exits, and at the end of a session, Binkley will move
the contents of the local file to the file specified in the
configuration file, but only if it is able to. The log file specified
in the configuration file will no longer be continiously opened by
Binkley, and can safely be accessed by other programs. If Binkley is
not able to write to the specified log file, the log entries just
stays put in the local file until Binkley is able to move it. The
local log files are called (xx is the task number):
BINKLEY.Cxx (Local Cost Log)
BINKLEY.Lxx (Local Status Log)
- Fix for ISDN caller ID using ZyXEL 2864I. When RING was seen and
Binkley was about to send the answer string, it would wait until the
modem became silent for a fraction of a second. In this delay, Binkley
would read characters from the modem, and silently throw them away.
The caller ID on ISDN lines was lost in this way! This is fixed, and
input from modem in this period, is now logged as usual. Setting
RingWait to 2, would also have solved this particular problem, but
there is no need to wait.
- "Respawn" command line argument. If this is specified, Binkley is
automatically respawned in the unexpected event that Binkley would
trap (memory access violations etc). This wan't work on DOS, but does
under OS/2, and may work with other real operating systems too.
The way this is accomplished is quite simple: We now have two processes
running for each Binkley. The first Binkley process spawns the other,
the normal Binkley, and monitors if it exits regularly. If so, the first
Binkley terminates itself with the errorlevel of the second Binkley. If
not, it just respawns the second Binkley.
The mechanism requires that the environment variable _BINKLEY_EXIT_ is
_NOT_ set when Binkley is initially started. Binkley checks if this
variable is set, and if so, assumes it is the second (normal) Binkley.
If it is not set, Binkley will set it itself, and spawn the second
Binkley. _BINKLEY_EXIT_ is set to the filename BINKxxxx.XIT, where xxxx is
the first Binkley's process ID. The second Binkley creates this file on
a normal exit, and the first Binkley checks if it can delete it. If not,
it didn't exist, and the normal Binkley must have died irregularly.
- The parser used to identify keywords would recognize "CostLogThingy" as
"CostLog"; i.e. allowing the input word to be longer than the keyword.
This may sound okay, but it means that you cannot have two keywords
where the first is a prefix of the other. Also, you cannot define
variables on the command line where the name matches a keyword. This
is changed now, and the parser requires the words to be of equal
length.
- Implemented TW's idea of setting environment variables on the command
line. If an argument contains a '=', it is put into the environment.
Example:
bt32 TASK=3
Remark of TW: The TASK=n argument on BT32.EXE command line is a
MUST HAVE in this version of BT-XE !
Don't use TaskNumber in Binkley.Cfg!
You MUST change your BAT / CMD files !!!
- Built the language file into the EXE file. If there is no language file,
Binkley now reads the language file from the EXE itself. The language is
simply appended to the EXE followed by the file size (two bytes). BTLNG
now can do this. Example:
btlng32 patch bt32.exe binkley.lng
Attention: you should NOT use an old *.LNG file nor an *.LNG file at all
if you want to have standard (english) messages - they are
built-in in the EXE now!
- "ShortCostLog" keyword. Binkley's costlog contains a log of useful
information that easier to monitor than the status log. However, this
log is ment for human reading, and not very easily handled with utilities
like grep, awk, (REXX?) etc. So i have invented a ShortCostLog
keyword. If it is used, the CostLog will be written in another format.
The argument to ShortCostLog is a format string specifying this
format. The format string can contain literal characters and macros. A
macro is prefixed with '$', followed by an optional length, and ended
with a character specifying what kind of information to write. If the
optional length begins with '0', the information is zero-padded;
otherwise it is space-padded. The following macros are defined:
$# TaskNumber
$$ The $ character
$< Newline
$A Node address
$B Baud rate
$C Size of biggest file sent or received
$D Seconds used to transmit biggest file ($C)
$E Total number of errors
$H Hour
$I Number of inbound files
$J CPS of inbound files
$M Minute
$O Number of outbound files
$P CPS of outbound files
$S Second
$T Total number of files
$U Total CPS
$V Size of biggest file received
$W Seconds used to receive biggest file ($V)
$X CPS of biggest file received ($V)
$Y CPS of biggest file send or received ($C)
$b Abbreviated month
$c Cost
$d Day of month
$f Number of errors when receiving files
$g Number of errors when transmitting files
$i Size of inbound files
$j Efficiency of inbound files
$m Month
$o Size of outbound files
$p Efficiency of outbound files
$s Seconds of session
$t Total size of files
$u Total efficiency
$v Size of biggest file sent
$w Seconds used to send biggest file ($v)
$x CPS of biggest file sent ($v)
$y Year without century
The format string can be left out in which case it defaults to:
ShortCostLog $02y$02m$02d $02H$02M$02S $# $14A $6B $4s $4c $8i $8o $8C $4Y
Which produces log entries like:
Biggest file
Date Time Task Node Connect Sec Cost In Out -size -cps
960328 132222 1 2:238/9 28800 29 0 6036 9903 9896 3298
960328 132539 1 2:238/54 28800 105 0 0 230517 223554 3287
You can also use ShortCostLog to produce comma separated files which can
be imported directly into a spreadsheet or a database.
- Source code fixes important to Watcom C only:
1. Watcom C uses buffered output as IBMC does, and this caused
problems with display updates while transferring files in terminal
mode. The real problem is that buffered writes are mixed with
unbuffered display output. The work-around for the IBM compiler
has been adopted for Watcom (flushing buffers).
2. The signal stuff used to handle Ctrl-C/Break didn't work with
Watcom. This seems to be a Watcom problem; signal(SIGBREAK,SIG_IGN)
is broken. The solution is to use signal(SIGBREAK,handler) instead,
letting handler() reinstall itself on SIGBREAK and do nothing else.
Modifications in this version done by Thomas Waldmann:
======================================================
- Fixed Hydra buffer management bug which caused memory corruption in original
BT 2.60 release. In OS/2 on my system this bug showed as funny attributes
on the upper "windows" of BT screen. But the effects may have varied widely
depending on compiler and system ...
- Error message for "COM0?.SYS" changed to "COM.SYS".
- Activated priority control.
The originally released EXE didn't control priority, but worked EVER at
priority Normal/0. This is too low, if you have other "heavy" processes
running on your system. ISDN transfer rates dropped to below 5000 CPS in
such cases (normal: 7000..7800 CPS) on my system (P133,32MB).
I set the appropriate compiler switch and re-activated the priority control.
Also, I enhanced priority control via environment variables.
You may now influence priorities using these environment variables:
This is the default: This is as without priority control:
SET REGULARPRIORITY=R31 SET REGULARPRIORITY=R0
SET MODEMPRIORITY=F31 SET MODEMPRIORITY=R0
SET JANUSPRIORITY=T31 SET JANUSPRIORITY=R0
SET HYDRAPRIORITY=T31 SET HYDRAPRIORITY=R0
Syntax: ...PRIORITY=<class>[delta]
class:
R = Regular (2)
F = Foregroundserver (4)
T = TimeCritical (3)
delta:
0 = normal
..
31 = high (default, if not specified)
Do experiments with these values! The defaults needn't to be the best values
for YOUR system and high priority needn't be better than low priority.
- The BINKLEY.DAY and .SCD are renamed to BINKLEY.Dxx and .Sxx (xx=TaskNumber).
- Multiline configuration via single Binkley.Cfg and Binkley.Evt files!
[Common] and [Task x] in single Binkley.Cfg / .Evt make multiline operation
possible with one single Cfg and one single Evt file.
You needn't use this nice feature if you don't want to. Operation should be
possible with the same config / event files as in orig. BT 2.60 release
without usage of these "sections", because the implicit default section at
top of each config file read (or included) is "[Common]".
BUT: you MUST use TASK=n commandline argument in ANY case.
[Common]
; settings in this section are read by all tasks.
; ...
[Task 1]
; settings in this section are read by Task 1 only.
; all other tasks ignore these settings like if they were "blind" ...
[Task 2]
; settings in this section are read by Task 2 only.
; all other tasks ignore these settings like if they were "blind" ...
[Common]
; settings in this section are read by all tasks.
; ...
If you specify a setting first in [Common] and afterwards the same setting
in [Task x] (or vice versa), behaviour of BT-XE in Task x is the same as
if you specified these settings twice in this order using original BT 2.60.
If you include another config file using "Include" statement, state (read
settings or not) is treated locally to each file and restored after return
from reading that file.
E.g.:
[Common]
; settings here are common for all tasks
Include Task1.Cfg <- may have [Task x] and [Common] sections, too.
; settings here are common for all tasks, regardless of Task1.Cfg contents.
- Using TaskNumber for BBS/EXT exits.
This is now handled like in Binkley 2.60 release (again).
Review your CMD / BAT files if you used former BT-XE versions !!!
BBS exits:
%1 %2 %3 %4 %5
DTErate ConnectRate COMhandle Time2NextEvent Modem-String
EXT exits:
%1 %2 %3 %4 %5 %6
DTErate ConnectRate COMhandle n Time2NextEvent Modem-String
This is NORMAL Binkley parameter layout again (no additional parameter as
in former betas of BT-XE). If you need the TaskNumber in this context, just
get it out of %TASK% environment variable (which is defined by BT-XE if you
invoke it with BT32.EXE TASK=n).
- Fixed bug caused by using wrong HPFS file timestamp in SCD/EVT and file
update request handling. Now, the "last file modification" timestamp is used.
Before, "last file access" timestamp was used - which was definitely WRONG
for HPFS. This caused problems on HPFS only, because FAT file system does not
have multiple different file timestamps like HPFS (file creation, last file
access, last file modification).
- "Hydra1st" config verb. Test this carefully !!!
Behaviour without Hydra1st: standard - like until now.
If a caller says to be able to do Janus,
he will get Janus protocol - even if he could
also do Hydra.
Behaviour with Hydra1st: Hydra is preferred.
If a caller says to be able to do Hydra, he will
get Hydra protocol - even if he could also do Janus.
- Zoomed outbound view "Age" bug fixed (weird ages of some thousand days were
displayed - fixed!).
- Fixed cosmetical problem with password failure msg ("trash" at end of PW)
"His='', Ours='XXXXXXXX<trash>'
- Enhanced Screen Layout / Colors:
- Extended color settings (like BT-EE now! ;-)
There are 2 more colors (configured after the normal 2.60 colors) now for
windows frame title text and frame color. See sample configs ...
- TaskNumber in top left corner
- Port and Baud switched position
- broader Recent Activity and Hold Window
- with mail "Age" display in Hold Window
- one screen row more than before (there are 25, not 24).
Therefore one row more in Recent Activity window.
- Implemented "MakeDir" config verb. This creates outbound directories needed
for BSY flags. Also, it removes empty outbound directories.
- RecentyActivity-Buffer is saved to and restored from disk file Binkley.Axx.
- FREQ response packet fixes:
- time string had incorrect printf format
- time string had incorrect FTS format (should be 2 blanks in the mid!)
- put in session password into freq response packet as packet password (well,
this isn't correct in every case, but better than no password at all).
- put in destination NODE address, too. This was forgotten ...
[EOF]